透過性の問題の概要
アプリケーションでの非透過性には、次の原因が考えられます。
- データベース・メタ・データの不統一: TimesTenとOracleのデータベース・メタ・データは別々に保存されます。JDBCとODBCのメタ・データ関数は、TimesTenのメタ・データのみを返します。Oracleのメタ・データ情報にアクセスしているアプリケーションでは、障害が発生する可能性があります。詳細は、「ODBCとの互換性」および「JDBCとの互換性」を参照してください。
- 結果セットの型の相違: TimesTenとOracleには異なる組込みSQLタイプがあります。このため、問合せがキャッシュまたはOracleのいずれで実行されるかによって、返される列の型が異なる場合があります。Cache Connect to Oracleでは、常にTimesTen型が返されます。すべてのOracle型は、対応するTimesTen型にマップされてから返されます。詳細は、「SQLとの互換性」を参照してください。
- トランザクションの独立性アルゴリズムの相違: トランザクションの独立性アルゴリズムが異なると、様々なブロッキングおよびデッドロックが発生します。これらのブロッキングおよびデッドロックは、アプリケーションの動作に影響する可能性があります。詳細は、「トランザクション・セマンティクス」を参照してください。
- 接続属性および文属性の相違: OracleとTimesTenには異なる接続および文の属性があります。カタログ名は、Oracleではサポートされていますが、TimesTenではサポートされていません。他の例としては、スクロール可能なカーソル、更新可能なカーソルなどがあります。
- SQLの相違: OracleとTimesTenのSQLはいくつかの点で異なります。このため、2つの類似した文を実行した場合、一方がOracleで実行され、他方がTimesTenで実行されたことが原因で、異なる結果が返される可能性があります。たとえば、OracleのLIKE条件では後続の空白は無視されますが、TimesTenのLIKE条件では無視されません。詳細は、「SQL演算子」を参照してください。
- 順序は、キャッシュされず、キャッシュとOracleデータベース間で同期化されません。詳細は、「SQL式」を参照してください。
- トリガーおよびプロシージャの副作用は、AUTOREFRESHまたは手動のREFRESH CACHE GROUP処理後までキャッシュに伝播されません。
- Oracleデータベース固有のエラー・コードの取得を試行するアプリケーションは動作しません。OracleエラーはTimesTenエラー・メッセージ内に表されるためです。
- TimesTenでサポートされていないJDBCおよびODBC API関数は動作しません。詳細は、「ODBCとの互換性」を参照してください。
- TimesTenの開発者ガイドで説明されているXAおよびJTA APIは、キャッシュ・グループではサポートされていません。
この章の後半では、トランザクション・セマンティクス、ODBC API、JDBC APIおよびSQLの領域での透過性の問題を詳しく取り上げます。